package com.loong.android.tools;

import android.content.Context;
import android.content.Intent;
import android.nfc.NdefMessage;
import android.nfc.NfcAdapter;
import android.nfc.Tag;
import android.os.Parcelable;
import android.provider.Settings;

/**
 * NCF工具类。
 * 需要手动添加权限：android.permission.NFC
 * 可以添加：<uses-feature android:name="android.hardware.nfc" android:required="true" />，
 * 表示应用必须在有nfc功能的设备上运行。
 */
public class NFC {
    /**
     * 获取NFC适配器
     * @param context 上下文
     */
    public static NfcAdapter getAdapter(Context context) {
        return NfcAdapter.getDefaultAdapter(context);
    }

    /**
     * 打开NFC的系统设置
     * @param context 上下文
     */
    public static void openNFCSetting(Context context) {
        context.startActivity(new Intent(Settings.ACTION_NFC_SETTINGS));
    }

    /**
     * 从窗口的意图数据中获取NFC标签
     * @param intent 意图数据对象
     */
    public static Tag getTag(Intent intent) {
        return intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
    }

    /**
     * 从窗口的意图数据中获取NFC标签的信息数组
     * @param intent 意图数据对象
     */
    public static NdefMessage[] getNdefMsg(Intent intent) {
        Parcelable[] array = intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES);
        if(array == null) return null;
        NdefMessage[] messages = new NdefMessage[array.length];
        for (int i = 0; i < array.length; i++) {
            Parcelable parcelable = array[i];
            messages[i] = parcelable instanceof NdefMessage ? (NdefMessage) parcelable : null;
        }
        return messages;
    }
}
